Scroll to navigation

rte_mbuf(3) DPDK rte_mbuf(3)

NAME

rte_mbuf

SYNOPSIS

#include <rte_mbuf_core.h>

Data Fields


void * buf_addr
struct rte_mbuf * next
uint16_t refcnt
uint16_t nb_segs
uint16_t port
uint64_t ol_flags
uint32_t pkt_len
uint16_t data_len
uint16_t vlan_tci
uint16_t vlan_tci_outer
uint16_t buf_len
struct rte_mempool * pool
uint64_t dynfield2
struct rte_mbuf_ext_shared_info * shinfo
uint16_t priv_size
uint16_t timesync
uint32_t dynfield1 [9]
uint32_t packet_type
uint8_t l2_type:4
uint8_t l3_type:4
uint8_t l4_type:4
uint8_t tun_type:4
uint8_t inner_esp_next_proto
uint8_t inner_l2_type:4
uint8_t inner_l3_type:4
uint8_t inner_l4_type:4
uint32_t rss
uint32_t lo
uint32_t hi
struct {
uint32_t hi
} fdir
struct rte_mbuf_sched sched
uint16_t txq
struct {
uint16_t txq
} txadapter
uint32_t usr
union {
uint32_t rss
struct {
uint32_t hi
} fdir
struct rte_mbuf_sched sched
struct {
uint16_t txq
} txadapter
uint32_t usr
} hash
uint64_t tx_offload
uint64_t l2_len:RTE_MBUF_L2_LEN_BITS
uint64_t l3_len:RTE_MBUF_L3_LEN_BITS
uint64_t l4_len:RTE_MBUF_L4_LEN_BITS
uint64_t tso_segsz:RTE_MBUF_TSO_SEGSZ_BITS
uint64_t outer_l3_len:RTE_MBUF_OUTL3_LEN_BITS
uint64_t outer_l2_len:RTE_MBUF_OUTL2_LEN_BITS

Detailed Description

The generic rte_mbuf, containing a packet mbuf.

Definition at line 466 of file rte_mbuf_core.h.

Field Documentation

void* buf_addr

Virtual address of segment buffer.

Definition at line 469 of file rte_mbuf_core.h.

struct rte_mbuf* next

Next segment of scattered packet. This field is valid when physical address field is undefined. Otherwise next pointer in the second cache line will be used.

Definition at line 486 of file rte_mbuf_core.h.

uint16_t refcnt

Reference counter. Its size should at least equal to the size of port field (16 bits), to support zero-copy broadcast. It should only be accessed using the following functions: rte_mbuf_refcnt_update(), rte_mbuf_refcnt_read(), and rte_mbuf_refcnt_set(). The functionality of these functions (atomic, or non-atomic) is controlled by the RTE_MBUF_REFCNT_ATOMIC flag.

Definition at line 501 of file rte_mbuf_core.h.

uint16_t nb_segs

Number of segments. Only valid for the first segment of an mbuf chain.

Definition at line 507 of file rte_mbuf_core.h.

uint16_t port

Input port (16 bits to support more than 256 virtual ports). The event eth Tx adapter uses this field to specify the output port.

Definition at line 512 of file rte_mbuf_core.h.

uint64_t ol_flags

Offload features.

Definition at line 514 of file rte_mbuf_core.h.

uint32_t packet_type

L2/L3/L4 and tunnel information.

Definition at line 527 of file rte_mbuf_core.h.

uint8_t l2_type

(Outer) L2 type.

Definition at line 530 of file rte_mbuf_core.h.

uint8_t l3_type

(Outer) L3 type.

Definition at line 531 of file rte_mbuf_core.h.

uint8_t l4_type

(Outer) L4 type.

Definition at line 532 of file rte_mbuf_core.h.

uint8_t tun_type

Tunnel type.

Definition at line 533 of file rte_mbuf_core.h.

uint8_t inner_esp_next_proto

ESP next protocol type, valid if RTE_PTYPE_TUNNEL_ESP tunnel type is set on both Tx and Rx.

Definition at line 535 of file rte_mbuf_core.h.

uint8_t inner_l2_type

Inner L2 type.

Definition at line 542 of file rte_mbuf_core.h.

uint8_t inner_l3_type

Inner L3 type.

Definition at line 544 of file rte_mbuf_core.h.

uint8_t inner_l4_type

Inner L4 type.

Definition at line 548 of file rte_mbuf_core.h.

uint32_t pkt_len

Total pkt len: sum of all segments.

Definition at line 552 of file rte_mbuf_core.h.

uint16_t data_len

Amount of data in segment buffer.

Definition at line 553 of file rte_mbuf_core.h.

uint16_t vlan_tci

VLAN TCI (CPU order), valid if RTE_MBUF_F_RX_VLAN is set.

Definition at line 555 of file rte_mbuf_core.h.

uint32_t rss

RSS hash result if RSS enabled

Definition at line 559 of file rte_mbuf_core.h.

uint32_t lo

Second 4 flexible bytes

Definition at line 566 of file rte_mbuf_core.h.

uint32_t hi

First 4 flexible bytes or FD ID, dependent on RTE_MBUF_F_RX_FDIR_* flag in ol_flags.

Definition at line 569 of file rte_mbuf_core.h.

struct { ... } fdir

Filter identifier if FDIR enabled

struct rte_mbuf_sched sched

Hierarchical scheduler : 8 bytes

Definition at line 559 of file rte_mbuf_core.h.

uint16_t txq

The event eth Tx adapter uses this field to store Tx queue id.

See also

rte_event_eth_tx_adapter_txq_set()

Definition at line 579 of file rte_mbuf_core.h.

struct { ... } txadapter

Eventdev ethdev Tx adapter

uint32_t usr

User defined tags. See rte_distributor_process()

Definition at line 585 of file rte_mbuf_core.h.

union { ... } hash

hash information

uint16_t vlan_tci_outer

Outer VLAN TCI (CPU order), valid if RTE_MBUF_F_RX_QINQ is set.

Definition at line 591 of file rte_mbuf_core.h.

uint16_t buf_len

Length of segment buffer.

Definition at line 593 of file rte_mbuf_core.h.

struct rte_mempool* pool

Pool from which mbuf was allocated.

Definition at line 595 of file rte_mbuf_core.h.

uint64_t dynfield2

Reserved for dynamic fields when the next pointer is in first cache line (i.e. RTE_IOVA_IN_MBUF is 0).

Definition at line 611 of file rte_mbuf_core.h.

uint64_t tx_offload

combined for easy fetch

Definition at line 616 of file rte_mbuf_core.h.

uint64_t l2_len

L2 (MAC) Header Length for non-tunneling pkt. Outer_L4_len + ... + Inner_L2_len for tunneling pkt.

Definition at line 619 of file rte_mbuf_core.h.

uint64_t l3_len

L3 (IP) Header Length.

Definition at line 623 of file rte_mbuf_core.h.

uint64_t l4_len

L4 (TCP/UDP) Header Length.

Definition at line 625 of file rte_mbuf_core.h.

uint64_t tso_segsz

TCP TSO segment size

Definition at line 627 of file rte_mbuf_core.h.

uint64_t outer_l3_len

Outer L3 (IP) Hdr Length.

Definition at line 642 of file rte_mbuf_core.h.

uint64_t outer_l2_len

Outer L2 (MAC) Hdr Length.

Definition at line 644 of file rte_mbuf_core.h.

struct rte_mbuf_ext_shared_info* shinfo

Shared data for external buffer attached to mbuf. See rte_pktmbuf_attach_extbuf().

Definition at line 654 of file rte_mbuf_core.h.

uint16_t priv_size

Size of the application private data. In case of an indirect mbuf, it stores the direct mbuf private data size.

Definition at line 659 of file rte_mbuf_core.h.

uint16_t timesync

Timesync flags for use with IEEE1588.

Definition at line 662 of file rte_mbuf_core.h.

uint32_t dynfield1[9]

Reserved for dynamic fields.

Definition at line 664 of file rte_mbuf_core.h.

Author

Generated automatically by Doxygen for DPDK from the source code.

Fri Dec 15 2023 Version 23.11.0